> < ^ Date: Tue, 07 Jan 1997 09:15:00 +0100 (MET)
> < ^ From: Heiko Theissen <heiko.theissen@math.rwth-aachen.de >
> < ^ Subject: [no subject]
FILE    fix28lib.dif __ 1997/01/06 ____ GAP bugfixes __ Heiko Thei"sen ______

This file contains a bugfix for a serious problem in GAP 3.4.3.
You should apply this bugfix soon.
The problem is in `PermGroupOps.RepresentativeOperation', and it may
cause a computation to fail with a cryptic error message.

ACKNOWLEDGEMENT

We thank Peter F M"uller of the University of Florida for bringing this
bug to our attention in his GAP forum article of 4 Jan 1997 (article
1083).

VERSION

GAP/lib 3.4.3.0

PRIORITY

The problem is a serious problem, because it may cause a computation to
fail. Thus the bugfix has medium priority, and we recommend that you
apply it soon.

HOW TO APPLY

Go to the GAP directory (the directory with the `lib/' subdirectory),
name this file `fix28lib.dif', and issue the command:

patch -p0 < fix28lib.dif

If `patch' writes "I can't seem to find a patch in there" try `patch -v'.
If `patch -v' gives an error message or reports a version older than 2.1,
get 2.1 from `ftp://FTP.Math.RWTH-Aachen.DE/pub/gap/utils/patch2_1.zoo'.

This fix changes only the library.
Thus you need not recompile the GAP kernel.

DESCRIPTION

`PermGroupOps.RepresentativeConjugationElements( G, d, e )' fails
if the group $G$ has a non-reduced base and signals

Error, List Element: <list>[1] must have a value at
img[bpt] := lensh[OrbitLength( Group( g ), bpt )] ... in
G.operations.RepresentativeConjugationElements( G, d, e ) called from
arg[1].operations.RepresentativeOperation( arg[1], arg[2], arg[3], OnPoints
) called from
RepresentativeOperation( G, (1,2), (1,3) ) called from
main loop

The analogous problem in `Centralizer' does not lead to an error.

CORRECT BEHAVIOUR

gap> G := Group(());
Group( () )
gap> G.stabChain := StabChain(G,rec(base:=[3,4],reduced:=false));;
gap> RepresentativeOperation(G,(1,2),(1,3));
false

COMMENT

`PermGroupOps.RepresentativeConjugationElements( G, d, e )' builds a list
which is indexed by cycle lengths of $d$ and contains for each cycle
length a union of cycles of that length. If $G$ is trivial, this list is
empty. Then for each base point $b$ of $G$, the list entry at position
``length of the $e$-cycle containing $b$'' is read. This causes the error
if $G$ is trivial but has a non-reduced base.

Such non-reduced bases can appear in centralisers in permutation groups,
which are computed with a backtrack algorithm. `RepresentativeOperation'
uses an iterative method involving such centralisers when it computes an
element which conjugates a list of permutations onto another one.

The analogous code in `Centralizer' is also changed with this patch,
although it causes no error.

DIFFS

Prereq: 3.21
--- lib/permbckt.g	Thu Dec 21 15:30:28 1995
+++ lib/permbckt.g	Tue Jan  7 09:05:55 1997
@@ -3,14 +3,17 @@
 #A  permbckt.g                  GAP library                         Udo Polis
 #A                                                         & Martin Schoenert
 ##
-#A  @(#)$Id: 2.html,v 1.2 2004/04/21 15:06:57 felsch Exp $
+#A  @(#)$Id: 2.html,v 1.2 2004/04/21 15:06:57 felsch Exp $
 ##
 #Y  Copyright 1990-1992,  Lehrstuhl D fuer Mathematik,  RWTH Aachen,  Germany
 ##
 ##  This file  contains  the  backtrack  functions  for  permutation  groups.
 ##
 #H  $Log: 2.html,v $
 #H  Revision 1.2  2004/04/21 15:06:57  felsch
 #H  Corrected links in the Forum Archive pages.   VF
 #H
 #H  Revision 1.1.1.1  2004/04/20 13:39:39  felsch
 #H  The final GAP-Forum archive until 2003.
 #H
 #H  Revision 1.2  2003/06/12 17:28:26  gap
 #H  Address updates by JN. AH
 #H
 #H  Revision 1.1  1997/08/15 11:19:43  gap
 #H  New forum setup. AH
 #H
 #H  Revision 1.1  1997/04/06 10:39:44  gap
 #H  Added forum archives (ahulpke)
 #H
-#H  Revision 3.21  1994/06/20  11:29:09  ahulpke
+#H  Revision 3.21.1.1  1997/01/06 13:41:46  htheisse
+#H  avoided non-redundant bases in centraliser/element conjugacy
+#H
+#H  Revision 3.21  1994/06/20 11:29:09  ahulpke
 #H  Transfer of .stabChainOps.random
 #H
 #H  Revision 3.20  1992/07/07  12:43:17  martin
@@ -519,8 +522,8 @@
 
     # compute a stabchain for $G$.
     # we take a base that has as often as possible $\beta_i^g = \beta_{i+1}$.
-    MakeStabChain( G, Concatenation(orbsg) );
-    base := G.operations.Base( G );
+    base := G.operations.Base( StabChain( G,
+        rec( base := Concatenation( orbsg ) ) ) );
 
     # for each length make a set of points in orbits of that length under $h$
     lensh := [];
@@ -990,8 +993,8 @@
 
     # compute a stabchain for $G$.
     # we take a base that has as often as possible $\beta_i^g = \beta_{i+1}$.
-    MakeStabChain( G, Concatenation(orbsH) );
-    base := G.operations.Base( G );
+    base := G.operations.Base( StabChain( G,
+        rec( base := Concatenation( orbsH ) ) ) );
 
     # for each length make a set of points in orbits of that length under $g$
     lensH := [];
END OF  fix28lib.dif ________________________________________________________

> < [top]